package notify

import (
	"context"
	"service/model/mod"
	model "service/model/notify"
	"time"

	gpb "gitee.com/cloudapex/protos/crm_message/pb"
	"gitee.com/cloudapex/ulern/htp"
	"gitee.com/cloudapex/ulern/util"
	"github.com/gin-gonic/gin"
)

/*type MssNoticeCreateRes struct {
	Id      int64  `form:"id" json:"id"`           //  公司消息ID
	CommpId int64  `form:"commpId" json:"commpId"` //  commpId 公司ID
	Content string `form:"content" json:"content"`                                        //  content 内容
	UserId  int64  `form:"userId" json:"userId"`                                          //  userId  创建者
	NoType  int64  `form:"noType" json:"noType"`                                          //  noType  通知类型 1 系统更新
	At      int64  `form:"at" json:"at"`
}*/

/*
 * 描述:系统消息列表
 * 路由: /notify/sysMsgList
 * 方法: POST
 *********************************************************************/
type SysMsgList struct {
	mod.SortFinder
	mod.PageFinder
	Title  string `form:"title" json:"title"`   //  title   标题
	NoType int64  `form:"noType" json:"noType"` //  noType  通知类型 1 系统更新
	Status int64  `form:"status" json:"status"` //  status  消息状态 1 草稿, 2 发布，3 停用， 4 删除

}

type SysMsgListRes struct {
	Id      int64  `json:"id"`      //消息ID
	CommpId int64  `json:"commpId"` //公司ID
	Content string `json:"content"` //内容
	UserId  int64  `json:"userId"`  //创建人
	NoType  int64  `json:"noType"`  //通知类型 1 系统消息 暂无
	At      int64  `json:"at"`      //创建时间
}

func (this *SysMsgList) Handle(c *gin.Context, ctx context.Context) htp.Response {
	jwtUser := mod.CurrUser(c)

	compyListreq := &gpb.MssNoticeListReq{
		Page:      int64(this.Page),
		Count:     int64(this.Pnum),
		Order:     int64(this.Order),
		Orule:     int64(this.Orule),
		CommpId:   jwtUser.CId,
		StartTime: this.Bgn,
		EndTime:   this.End,
		UserId:    jwtUser.UId,
	}
	list, err := model.SysMsg.GetList(ctx, compyListreq)
	if list == nil || nil != err {
		return htp.RespOK("", &struct {
			Total int64       `json:"total"`
			List  interface{} `json:"list"`
		}{0, nil})
	}
	items := []rspItem{}
	if err := util.Convert(&items, list.Data); err != nil {
		return htp.RespConvertErr("", err)
	}

	if err != nil {
		return htp.RespModelErr("", err)
	}

	return htp.RespOK("", &struct {
		Total int64       `json:"total"`
		List  interface{} `json:"list"`
	}{list.Pager.Total, items})

}

/*
 * 描述: 添加公司公告
 * 路由: /notify/addSys
 * 方法: POST
 *********************************************************************/
type AddSysMsgList struct {
	Content string //  content 内容
	NoType  int64  //  noType  系统类型 1更新消息
	UId     int64  // 用户Id
	CId     int64  // 公司Id

}

func AddSys(addSysMsg *AddSysMsgList, ctx context.Context) error {
	req := &gpb.MssNoticeCreateReq{
		CommpId: addSysMsg.CId,
		Content: addSysMsg.Content,
		UserId:  addSysMsg.UId,
		NoType:  addSysMsg.NoType,
		At:      time.Now().Unix(),
	}
	_, err := model.SysMsg.Add(ctx, req)
	return err
}
